Перейти к основному содержимому
Версия: 2.0

R-Vision

Интеграция с R-Vision TIP

Данное руководство описывает быструю настройку интеграции Solar TI Feeds Agent с R-Vision Threat Intelligence Platform (TIP) для автоматической загрузки индикаторов компрометации (IoC).


Предварительные требования

  • Установленный и настроенный Solar TI Feeds Agent
  • Действительный JWT-токен для доступа к Solar TI Feeds API
  • Учётные данные для доступа к R-Vision TIP API (x-api-key)
  • Идентификатор интеграции (Integration ID) в R-Vision TIP

Конфигурация интеграции

Интеграция автоматизирует выгрузку индикаторов из Solar TI Feeds в R-Vision TIP. Для подключения к системе используется аутентификация типа HeaderAuth с передачей API-ключа в заголовке x-api-key.

Основные компоненты интеграции:

КомпонентНазначение
FeedsAPIGeneratorЗагрузка данных из Solar TI Feeds API
FeedsDBSinkСохранение данных в локальную SQLite-базу
FeedsDBGeneratorЧтение данных из базы для обработки
FeedsFailedDBGeneratorПовторная обработка ошибочных записей
RVisionSinkОтправка данных в R-Vision TIP через API

Переменные окружения

Для работы интеграции необходимо определить следующие переменные окружения в файле docker-compose.yml:

ПеременнаяНазначениеЗначение по умолчанию
TIC_AGENT_RVISION_ADDRESSURL-адрес сервера R-Vision TIP API (например, https://tip.example.com:4002)-
TIC_AGENT_RVISION_TOKENAPI-ключ для аутентификации в R-Vision TIP (заголовок x-api-key)-
TIC_AGENT_RVISION_INTEGRATION_IDИдентификатор интеграции в R-Vision TIP-
TIC_AGENT_RVISION_PROXYСтрока подключения к прокси-серверу для R-Vision (например, socks5://user:password@proxy.domain:port)-

Структура pipeline для R-Vision

В актуальной версии конфигурации используется один комплексный pipeline, а не отдельные pipeline для каждого фида. Pipeline состоит из двух частей:

Pipeline 1: feeds-api (загрузка данных)

КомпонентПараметрыОписание
FeedsAPIGeneratorname = "feeds-api-generator"Запрос данных из Solar TI Feeds API с настраиваемыми интервалом и размером пакета. Запрашиваются все поля (fields = "all").
server = templates.TICApiCfg (адрес и токен из TIC_AGENT_API_URL / TIC_AGENT_API_TOKEN)
schedule = (read?("env:TIC_AGENT_API_POOL_INTERVAL") ?? 3600).toInt().s
filter.pagination.limit = (read?("env:TIC_AGENT_API_BATCH_SIZE") ?? 1000).toInt()
FeedsDBSinkname = "feeds-db-sink"
inputs = ["feeds-api-generator"]
Сохранение всех полученных данных в SQLite-базу для последующей обработки.

Pipeline 2: r-vision (обработка и выгрузка)

КомпонентПараметрыОписание
FeedsDBGeneratorname = "r-vision-feeds-db-generator"Чтение индикаторов из БД с настраиваемыми интервалом, задержкой и размером пакета.
schedule = (read?("env:TIC_AGENT_DB_POOL_INTERVAL") ?? 600).toInt().s
delay = (read?("env:TIC_AGENT_DB_START_DELAY") ?? 60).toInt().s
batchSize = (read?("env:TIC_AGENT_DB_BATCH_SIZE") ?? 100).toInt()
batchDelay = (read?("env:TIC_AGENT_DB_BATCH_DELAY") ?? 100).toInt().ms
FeedsFailedDBGeneratorname = "r-vision-feeds-db-failed-generator"Повторная обработка индикаторов, отправка которых ранее завершилась ошибкой. Привязан к основному генератору через feedGenName. Параметры schedule и delay не задаются – используются значения по умолчанию, заданные в компоненте (или наследуются от основного генератора).
feedGenName = "r-vision-feeds-db-generator"
RVisionSinkname = "r-vision-sink"Отправка подготовленных индикаторов в R‑Vision TIP. Аутентификация – через заголовок x-api-key. Поддерживается прокси.
inputs = ["r-vision-feeds-db-generator", "r-vision-feeds-db-failed-generator"]
server = new agent.ServerCfg {
  address = read("env:TIC_AGENT_RVISION_ADDRESS")
  credentials = new agent.HeaderAuth {
    name = "x-api-key"
    value = read("env:TIC_AGENT_RVISION_TOKEN")
  }
  proxy = read?("env:TIC_AGENT_RVISION_PROXY")
}
integrationId = read("env:TIC_AGENT_RVISION_INTEGRATION_ID")

Условие фильтрации (Filter)

Для настройки фильтрации необходимо обратиться в службу технической поддержки.


Справочник параметров для R-Vision TIP

Параметры ServerCfg (подключение к R-Vision TIP)

ПараметрТип данныхЗначение по умолчаниюОбязательностьОписаниеПример
credentialsHeaderAuthnew NoAuth {}ДаДанные для аутентификацииcredentials = new agent.HeaderAuth{name = "x-api-key" value = read("env:TIC_AGENT_RVISION_TOKEN")}
addressAddressДаURL-адрес сервера R-Vision TIP APIaddress = read("env:TIC_AGENT_RVISION_ADDRESS")

Параметры RVisionSink

ПараметрТип данныхОбязательностьОписание
serverServerCfgДаКонфигурация подключения к серверу R-Vision TIP
integrationIdStringДаИдентификатор интеграции, полученный в R-Vision TIP

Полный код конфигурационного файла для интеграции с R-Vision TIP

📄 Нажмите, чтобы показать/скрыть config-rvision.pkl
amends "package://pkg.pkl-lang.org/github.com/pipelane/pipelaner/pipelaner@1.3.1#/Pipelaner.pkl"
import "package://pkg.pkl-lang.org/github.com/pipelane/pipelaner/pipelaner@1.3.1#/source/Components.pkl"
import "../pkl/internal/agent.pkl"
import "../pkl/internal/templates.pkl"

pipelines {
new Components.Pipeline {
name = "feeds-api"
inputs {
new agent.FeedsAPIGenerator {
name = "feeds-api-generator"
schedule = templates.scheduleCron10MinCfg
server = templates.serverApiCfg
}
}
sinks {
new agent.FeedsDBSink {
name = "feeds-db-sink"
inputs {
"feeds-api-generator"
}
}
}
}

new Components.Pipeline {
name = "r-vision"
inputs {
new agent.FeedsDBGenerator {
name = "feeds-db-generator"
schedule = templates.scheduleCron10MinCfg
delay = 1.min
}
new agent.FeedsFailedDBGenerator {
name = "feeds-db-failed-generator"
feedGenName = "feeds-db-generator"
schedule = templates.scheduleCron30MinCfg
delay = 5.min
}
}
sinks {
new agent.RVisionSink {
name = "feeds-open-cti-sink"
inputs {
"feeds-db-generator"
"feeds-db-failed-generator"
}
server = new agent.ServerCfg{
address = read("env:TIC_AGENT_RVISION_ADDRESS")
credentials = new agent.HeaderAuth{
name = "x-api-key"
value = read("env:TIC_AGENT_RVISION_TOKEN")
}
}
integrationId = read("env:TIC_AGENT_RVISION_INTEGRATION_ID")
}
}
}
}

settings = templates.baseSettings

Мониторинг результатов работы интеграции

После запуска агента убедитесь в корректности работы интеграции:

ПроверкаДействие
Проверка логов агентаПросмотрите логи в директории ./workdir/logs на наличие ошибок или предупреждений
Верификация в R-Vision TIPВ интерфейсе R-Vision TIP убедитесь, что индикаторы загружаются с указанным integrationId
Проверка фильтрацииУбедитесь, что загружаются только индикаторы, соответствующие условиям фильтра

Примечание: Логи агента также можно просмотреть в реальном времени с помощью команды docker logs {CONTAINER_NAME}.